/*
 * 文件名：RSAKeyBuilder.java
 * 版权：Copyright by http://www.infopub.top/
 * 描述：
 * 修改人：Awoke
 * 修改时间：2019年1月8日
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */

package top.infopub.util.security;


import java.security.KeyPair;
import java.security.KeyPairGenerator;

import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * RSA公私鈅生成器
 * @author Awoke
 * @version 2019年1月8日
 * @see RsaKeyBuilder
 * @since
 */
public final class RsaKeyBuilder {

    private static Logger log = LoggerFactory.getLogger(RsaKeyBuilder.class);

    /**
     * 密钥默认长度
     */
    public static final int DEFAULT_KEY_SIZE = 1024;

    /**
     * 生成公私鈅 (1024)
     * @see
     */
    public static void createKeyPairs() {
        try {
            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
            generator.initialize(DEFAULT_KEY_SIZE);
            KeyPair pair = generator.generateKeyPair();
            byte[] publicKeyBytes = pair.getPublic().getEncoded();
            byte[] privatekeyBytes = pair.getPrivate().getEncoded();
            String publicKey = new String(Base64.encodeBase64(publicKeyBytes));
            String privatekey = new String(Base64.encodeBase64(privatekeyBytes));
            log.info("公钥Base64编码:\n" + publicKey);
            log.info("私钥Base64编码:\n" + privatekey);
        }
        catch (Exception e) {
            log.error("", e);
        }
    }

    /** run **/
    public static void main(String args[]) {
        createKeyPairs();
    }

}
